yusufunlu

Spring Framework Fundamentals

April 24, 2020 • ☕️ 1 min read

Translated by readers into: Türkçe

Bean

singleton is the default scope for Spring beans. Business logic should be stateless and singleton is stateless too. The prototype scope is better for stateful beans to avoid multithreading issues.

Scope

Spring daha yokken de bildiğimiz bir kavram scope. Bir değişkenin etki alanıdır. Java’da bir değişken class için yaratılmışsa etki alanı yani scope’u o class’tır. Eğer değişken method içinde yaratılmışsa. Aynen bu şekilde Spring’in bean’i de bir session için yaratılmış da olabilir sadece tek bir http request için de yaratılmış da olabilir. Bu durumda gelecek 2. request için farklı bir bean yaratılır.

Bu şekilde 5 scope seçeneğimiz vardır.

  • Singleton: Default yani özel bir ayar yapmazsak bean’ler singleton çalışır. Her bir Spring container veya context(application context) içinde o bean’den bir tane olmasını sağlar. Eğer JVM üzerinde birden fazla Spring container olursa singleton itemler da çoklanır.
  • Prototype: Spring container’dan bu bean’i her istediğimizde bize bean’i yeniden üretir ve uniq(eşsiz) olur.
  • Session
  • Request
  • Global

Opinionated

Spring boot has Opinionated Defaults Configurations. If you include the spring boot starter pom for jpa, you’ll get autoconfigured for you an in memory database, a hibernate entity manager, and a simple datasource.

stereotype

Annotations in spring are @Component and its derivations @Service, @Repository, and @Controller. Spring context will autodetect these classes when annotation-based configuration and classpath scanning is used

@Service

It can be applied only to classes

 @Controller

It can be applied to classes only. Mostly being used with @RequestMapping handler The dispatcher scans such annotated classes for mapped methods and detects @RequestMapping annotations

Embedded Container

Spring web includes tomcat as default container move away from deploying java web applications to a java servlet container (or application server) in the form of a war file (or ear file) and instead package the application as an executable jar with an embedded servlet/HTTP server like jetty.